
/*
 * Ext JS Library 2.1
 * Copyright(c) 2006-2008, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://extjs.com/license
 */
Ext = {version:"2.1"};
window["undefined"] = window["undefined"];
Ext.apply = function (C, D, B) {
	if (B) {
		Ext.apply(C, B);
	}
	if (C && D && typeof D == "object") {
		for (var A in D) {
			C[A] = D[A];
		}
	}
	return C;
};
(function () {
	var idSeed = 0;
	var ua = navigator.userAgent.toLowerCase();
	var isStrict = document.compatMode == "CSS1Compat", isOpera = ua.indexOf("opera") > -1, isSafari = (/webkit|khtml/).test(ua), isSafari3 = isSafari && ua.indexOf("webkit/5") != -1, isIE = !isOpera && ua.indexOf("msie") > -1, isIE7 = !isOpera && ua.indexOf("msie 7") > -1, isGecko = !isSafari && ua.indexOf("gecko") > -1, isBorderBox = isIE && !isStrict, isWindows = (ua.indexOf("windows") != -1 || ua.indexOf("win32") != -1), isMac = (ua.indexOf("macintosh") != -1 || ua.indexOf("mac os x") != -1), isAir = (ua.indexOf("adobeair") != -1), isLinux = (ua.indexOf("linux") != -1), isSecure = window.location.href.toLowerCase().indexOf("https") === 0;
	if (isIE && !isIE7) {
		try {
			document.execCommand("BackgroundImageCache", false, true);
		}
		catch (e) {
		}
	}
	Ext.apply(Ext, {isStrict:isStrict, isSecure:isSecure, isReady:false, enableGarbageCollector:true, enableListenerCollection:false, SSL_SECURE_URL:"javascript:false", BLANK_IMAGE_URL:"http:/" + "/extjs.com/s.gif", emptyFn:function () {
	}, applyIf:function (o, c) {
		if (o && c) {
			for (var p in c) {
				if (typeof o[p] == "undefined") {
					o[p] = c[p];
				}
			}
		}
		return o;
	}, addBehaviors:function (o) {
		if (!Ext.isReady) {
			Ext.onReady(function () {
				Ext.addBehaviors(o);
			});
			return;
		}
		var cache = {};
		for (var b in o) {
			var parts = b.split("@");
			if (parts[1]) {
				var s = parts[0];
				if (!cache[s]) {
					cache[s] = Ext.select(s);
				}
				cache[s].on(parts[1], o[b]);
			}
		}
		cache = null;
	}, id:function (el, prefix) {
		prefix = prefix || "ext-gen";
		el = Ext.getDom(el);
		var id = prefix + (++idSeed);
		return el ? (el.id ? el.id : (el.id = id)) : id;
	}, extend:function () {
		var io = function (o) {
			for (var m in o) {
				this[m] = o[m];
			}
		};
		var oc = Object.prototype.constructor;
		return function (sb, sp, overrides) {
			if (typeof sp == "object") {
				overrides = sp;
				sp = sb;
				sb = overrides.constructor != oc ? overrides.constructor : function () {
					sp.apply(this, arguments);
				};
			}
			var F = function () {
			}, sbp, spp = sp.prototype;
			F.prototype = spp;
			sbp = sb.prototype = new F();
			sbp.constructor = sb;
			sb.superclass = spp;
			if (spp.constructor == oc) {
				spp.constructor = sp;
			}
			sb.override = function (o) {
				Ext.override(sb, o);
			};
			sbp.override = io;
			Ext.override(sb, overrides);
			sb.extend = function (o) {
				Ext.extend(sb, o);
			};
			return sb;
		};
	}(), override:function (origclass, overrides) {
		if (overrides) {
			var p = origclass.prototype;
			for (var method in overrides) {
				p[method] = overrides[method];
			}
		}
	}, namespace:function () {
		var a = arguments, o = null, i, j, d, rt;
		for (i = 0; i < a.length; ++i) {
			d = a[i].split(".");
			rt = d[0];
			eval("if (typeof " + rt + " == \"undefined\"){" + rt + " = {};} o = " + rt + ";");
			for (j = 1; j < d.length; ++j) {
				o[d[j]] = o[d[j]] || {};
				o = o[d[j]];
			}
		}
	}, urlEncode:function (o) {
		if (!o) {
			return "";
		}
		var buf = [];
		for (var key in o) {
			var ov = o[key], k = encodeURIComponent(key);
			var type = typeof ov;
			if (type == "undefined") {
				buf.push(k, "=&");
			} else {
				if (type != "function" && type != "object") {
					buf.push(k, "=", encodeURIComponent(ov), "&");
				} else {
					if (Ext.isArray(ov)) {
						if (ov.length) {
							for (var i = 0, len = ov.length; i < len; i++) {
								buf.push(k, "=", encodeURIComponent(ov[i] === undefined ? "" : ov[i]), "&");
							}
						} else {
							buf.push(k, "=&");
						}
					}
				}
			}
		}
		buf.pop();
		return buf.join("");
	}, urlDecode:function (string, overwrite) {
		if (!string || !string.length) {
			return {};
		}
		var obj = {};
		var pairs = string.split("&");
		var pair, name, value;
		for (var i = 0, len = pairs.length; i < len; i++) {
			pair = pairs[i].split("=");
			name = decodeURIComponent(pair[0]);
			value = decodeURIComponent(pair[1]);
			if (overwrite !== true) {
				if (typeof obj[name] == "undefined") {
					obj[name] = value;
				} else {
					if (typeof obj[name] == "string") {
						obj[name] = [obj[name]];
						obj[name].push(value);
					} else {
						obj[name].push(value);
					}
				}
			} else {
				obj[name] = value;
			}
		}
		return obj;
	}, each:function (array, fn, scope) {
		if (!Ext.isArray(array)) {
			array = [array];
		}
		for (var i = 0, len = array.length; i < len; i++) {
			if (fn.call(scope || array[i], array[i], i, array) === false) {
				return i;
			}
		}
	}, combine:function () {
		var as = arguments, l = as.length, r = [];
		for (var i = 0; i < l; i++) {
			var a = as[i];
			if (Ext.isArray(a)) {
				r = r.concat(a);
			} else {
				if (a.length !== undefined && !a.substr) {
					r = r.concat(Array.prototype.slice.call(a, 0));
				} else {
					r.push(a);
				}
			}
		}
		return r;
	}, escapeRe:function (s) {
		return s.replace(/([.*+?^${}()|[\]\/\\])/g, "\\$1");
	}, callback:function (cb, scope, args, delay) {
		if (typeof cb == "function") {
			if (delay) {
				cb.defer(delay, scope, args || []);
			} else {
				cb.apply(scope, args || []);
			}
		}
	}, getDom:function (el) {
		if (!el || !document) {
			return null;
		}
		return el.dom ? el.dom : (typeof el == "string" ? document.getElementById(el) : el);
	}, getDoc:function () {
		return Ext.get(document);
	}, getBody:function () {
		return Ext.get(document.body || document.documentElement);
	}, getCmp:function (id) {
		return Ext.ComponentMgr.get(id);
	}, num:function (v, defaultValue) {
		if (typeof v != "number") {
			return defaultValue;
		}
		return v;
	}, destroy:function () {
		for (var i = 0, a = arguments, len = a.length; i < len; i++) {
			var as = a[i];
			if (as) {
				if (typeof as.destroy == "function") {
					as.destroy();
				} else {
					if (as.dom) {
						as.removeAllListeners();
						as.remove();
					}
				}
			}
		}
	}, removeNode:isIE ? function () {
		var d;
		return function (n) {
			if (n && n.tagName != "BODY") {
				d = d || document.createElement("div");
				d.appendChild(n);
				d.innerHTML = "";
			}
		};
	}() : function (n) {
		if (n && n.parentNode && n.tagName != "BODY") {
			n.parentNode.removeChild(n);
		}
	}, type:function (o) {
		if (o === undefined || o === null) {
			return false;
		}
		if (o.htmlElement) {
			return "element";
		}
		var t = typeof o;
		if (t == "object" && o.nodeName) {
			switch (o.nodeType) {
			  case 1:
				return "element";
			  case 3:
				return (/\S/).test(o.nodeValue) ? "textnode" : "whitespace";
			}
		}
		if (t == "object" || t == "function") {
			switch (o.constructor) {
			  case Array:
				return "array";
			  case RegExp:
				return "regexp";
			}
			if (typeof o.length == "number" && typeof o.item == "function") {
				return "nodelist";
			}
		}
		return t;
	}, isEmpty:function (v, allowBlank) {
		return v === null || v === undefined || (!allowBlank ? v === "" : false);
	}, value:function (v, defaultValue, allowBlank) {
		return Ext.isEmpty(v, allowBlank) ? defaultValue : v;
	}, isArray:function (v) {
		return v && typeof v.pop == "function";
	}, isDate:function (v) {
		return v && typeof v.getFullYear == "function";
	}, isOpera:isOpera, isSafari:isSafari, isSafari3:isSafari3, isSafari2:isSafari && !isSafari3, isIE:isIE, isIE6:isIE && !isIE7, isIE7:isIE7, isGecko:isGecko, isBorderBox:isBorderBox, isLinux:isLinux, isWindows:isWindows, isMac:isMac, isAir:isAir, useShims:((isIE && !isIE7) || (isGecko && isMac))});
	Ext.ns = Ext.namespace;
})();
Ext.ns("Ext", "Ext.util", "Ext.grid", "Ext.dd", "Ext.tree", "Ext.data", "Ext.form", "Ext.menu", "Ext.state", "Ext.lib", "Ext.layout", "Ext.app", "Ext.ux");
Ext.apply(Function.prototype, {createCallback:function () {
	var A = arguments;
	var B = this;
	return function () {
		return B.apply(window, A);
	};
}, createDelegate:function (C, B, A) {
	var D = this;
	return function () {
		var F = B || arguments;
		if (A === true) {
			F = Array.prototype.slice.call(arguments, 0);
			F = F.concat(B);
		} else {
			if (typeof A == "number") {
				F = Array.prototype.slice.call(arguments, 0);
				var E = [A, 0].concat(B);
				Array.prototype.splice.apply(F, E);
			}
		}
		return D.apply(C || window, F);
	};
}, defer:function (C, E, B, A) {
	var D = this.createDelegate(E, B, A);
	if (C) {
		return setTimeout(D, C);
	}
	D();
	return 0;
}, createSequence:function (B, A) {
	if (typeof B != "function") {
		return this;
	}
	var C = this;
	return function () {
		var D = C.apply(this || window, arguments);
		B.apply(A || this || window, arguments);
		return D;
	};
}, createInterceptor:function (B, A) {
	if (typeof B != "function") {
		return this;
	}
	var C = this;
	return function () {
		B.target = this;
		B.method = C;
		if (B.apply(A || this || window, arguments) === false) {
			return;
		}
		return C.apply(this || window, arguments);
	};
}});
Ext.applyIf(String, {escape:function (A) {
	return A.replace(/('|\\)/g, "\\$1");
}, leftPad:function (D, B, C) {
	var A = new String(D);
	if (!C) {
		C = " ";
	}
	while (A.length < B) {
		A = C + A;
	}
	return A.toString();
}, format:function (B) {
	var A = Array.prototype.slice.call(arguments, 1);
	return B.replace(/\{(\d+)\}/g, function (C, D) {
		return A[D];
	});
}});
String.prototype.toggle = function (B, A) {
	return this == B ? A : B;
};
String.prototype.trim = function () {
	var A = /^\s+|\s+$/g;
	return function () {
		return this.replace(A, "");
	};
}();
Ext.applyIf(Number.prototype, {constrain:function (B, A) {
	return Math.min(Math.max(this, B), A);
}});
Ext.applyIf(Array.prototype, {indexOf:function (C) {
	for (var B = 0, A = this.length; B < A; B++) {
		if (this[B] == C) {
			return B;
		}
	}
	return -1;
}, remove:function (B) {
	var A = this.indexOf(B);
	if (A != -1) {
		this.splice(A, 1);
	}
	return this;
}});
Date.prototype.getElapsed = function (A) {
	return Math.abs((A || new Date()).getTime() - this.getTime());
};
(function () {
	var B;
	Ext.lib.Dom = {getViewWidth:function (E) {
		return E ? this.getDocumentWidth() : this.getViewportWidth();
	}, getViewHeight:function (E) {
		return E ? this.getDocumentHeight() : this.getViewportHeight();
	}, getDocumentHeight:function () {
		var E = (document.compatMode != "CSS1Compat") ? document.body.scrollHeight : document.documentElement.scrollHeight;
		return Math.max(E, this.getViewportHeight());
	}, getDocumentWidth:function () {
		var E = (document.compatMode != "CSS1Compat") ? document.body.scrollWidth : document.documentElement.scrollWidth;
		return Math.max(E, this.getViewportWidth());
	}, getViewportHeight:function () {
		if (Ext.isIE) {
			return Ext.isStrict ? document.documentElement.clientHeight : document.body.clientHeight;
		} else {
			return self.innerHeight;
		}
	}, getViewportWidth:function () {
		if (Ext.isIE) {
			return Ext.isStrict ? document.documentElement.clientWidth : document.body.clientWidth;
		} else {
			return self.innerWidth;
		}
	}, isAncestor:function (F, G) {
		F = Ext.getDom(F);
		G = Ext.getDom(G);
		if (!F || !G) {
			return false;
		}
		if (F.contains && !Ext.isSafari) {
			return F.contains(G);
		} else {
			if (F.compareDocumentPosition) {
				return !!(F.compareDocumentPosition(G) & 16);
			} else {
				var E = G.parentNode;
				while (E) {
					if (E == F) {
						return true;
					} else {
						if (!E.tagName || E.tagName.toUpperCase() == "HTML") {
							return false;
						}
					}
					E = E.parentNode;
				}
				return false;
			}
		}
	}, getRegion:function (E) {
		return Ext.lib.Region.getRegion(E);
	}, getY:function (E) {
		return this.getXY(E)[1];
	}, getX:function (E) {
		return this.getXY(E)[0];
	}, getXY:function (G) {
		var F, K, M, N, J = (document.body || document.documentElement);
		G = Ext.getDom(G);
		if (G == J) {
			return [0, 0];
		}
		if (G.getBoundingClientRect) {
			M = G.getBoundingClientRect();
			N = C(document).getScroll();
			return [M.left + N.left, M.top + N.top];
		}
		var O = 0, L = 0;
		F = G;
		var E = C(G).getStyle("position") == "absolute";
		while (F) {
			O += F.offsetLeft;
			L += F.offsetTop;
			if (!E && C(F).getStyle("position") == "absolute") {
				E = true;
			}
			if (Ext.isGecko) {
				K = C(F);
				var P = parseInt(K.getStyle("borderTopWidth"), 10) || 0;
				var H = parseInt(K.getStyle("borderLeftWidth"), 10) || 0;
				O += H;
				L += P;
				if (F != G && K.getStyle("overflow") != "visible") {
					O += H;
					L += P;
				}
			}
			F = F.offsetParent;
		}
		if (Ext.isSafari && E) {
			O -= J.offsetLeft;
			L -= J.offsetTop;
		}
		if (Ext.isGecko && !E) {
			var I = C(J);
			O += parseInt(I.getStyle("borderLeftWidth"), 10) || 0;
			L += parseInt(I.getStyle("borderTopWidth"), 10) || 0;
		}
		F = G.parentNode;
		while (F && F != J) {
			if (!Ext.isOpera || (F.tagName != "TR" && C(F).getStyle("display") != "inline")) {
				O -= F.scrollLeft;
				L -= F.scrollTop;
			}
			F = F.parentNode;
		}
		return [O, L];
	}, setXY:function (E, F) {
		E = Ext.fly(E, "_setXY");
		E.position();
		var G = E.translatePoints(F);
		if (F[0] !== false) {
			E.dom.style.left = G.left + "px";
		}
		if (F[1] !== false) {
			E.dom.style.top = G.top + "px";
		}
	}, setX:function (F, E) {
		this.setXY(F, [E, false]);
	}, setY:function (E, F) {
		this.setXY(E, [false, F]);
	}};
	Ext.lib.Event = function () {
		var F = false;
		var G = [];
		var K = [];
		var I = 0;
		var H = [];
		var E = 0;
		var J = null;
		return {POLL_RETRYS:200, POLL_INTERVAL:20, EL:0, TYPE:1, FN:2, WFN:3, OBJ:3, ADJ_SCOPE:4, _interval:null, startInterval:function () {
			if (!this._interval) {
				var L = this;
				var M = function () {
					L._tryPreloadAttach();
				};
				this._interval = setInterval(M, this.POLL_INTERVAL);
			}
		}, onAvailable:function (N, L, O, M) {
			H.push({id:N, fn:L, obj:O, override:M, checkReady:false});
			I = this.POLL_RETRYS;
			this.startInterval();
		}, addListener:function (Q, M, P) {
			Q = Ext.getDom(Q);
			if (!Q || !P) {
				return false;
			}
			if ("unload" == M) {
				K[K.length] = [Q, M, P];
				return true;
			}
			var O = function (R) {
				return typeof Ext != "undefined" ? P(Ext.lib.Event.getEvent(R)) : false;
			};
			var L = [Q, M, P, O];
			var N = G.length;
			G[N] = L;
			this.doAdd(Q, M, O, false);
			return true;
		}, removeListener:function (S, O, R) {
			var Q, N;
			S = Ext.getDom(S);
			if (!R) {
				return this.purgeElement(S, false, O);
			}
			if ("unload" == O) {
				for (Q = 0, N = K.length; Q < N; Q++) {
					var M = K[Q];
					if (M && M[0] == S && M[1] == O && M[2] == R) {
						K.splice(Q, 1);
						return true;
					}
				}
				return false;
			}
			var L = null;
			var P = arguments[3];
			if ("undefined" == typeof P) {
				P = this._getCacheIndex(S, O, R);
			}
			if (P >= 0) {
				L = G[P];
			}
			if (!S || !L) {
				return false;
			}
			this.doRemove(S, O, L[this.WFN], false);
			delete G[P][this.WFN];
			delete G[P][this.FN];
			G.splice(P, 1);
			return true;
		}, getTarget:function (N, M) {
			N = N.browserEvent || N;
			var L = N.target || N.srcElement;
			return this.resolveTextNode(L);
		}, resolveTextNode:function (L) {
			if (Ext.isSafari && L && 3 == L.nodeType) {
				return L.parentNode;
			} else {
				return L;
			}
		}, getPageX:function (M) {
			M = M.browserEvent || M;
			var L = M.pageX;
			if (!L && 0 !== L) {
				L = M.clientX || 0;
				if (Ext.isIE) {
					L += this.getScroll()[1];
				}
			}
			return L;
		}, getPageY:function (L) {
			L = L.browserEvent || L;
			var M = L.pageY;
			if (!M && 0 !== M) {
				M = L.clientY || 0;
				if (Ext.isIE) {
					M += this.getScroll()[0];
				}
			}
			return M;
		}, getXY:function (L) {
			L = L.browserEvent || L;
			return [this.getPageX(L), this.getPageY(L)];
		}, getRelatedTarget:function (M) {
			M = M.browserEvent || M;
			var L = M.relatedTarget;
			if (!L) {
				if (M.type == "mouseout") {
					L = M.toElement;
				} else {
					if (M.type == "mouseover") {
						L = M.fromElement;
					}
				}
			}
			return this.resolveTextNode(L);
		}, getTime:function (N) {
			N = N.browserEvent || N;
			if (!N.time) {
				var M = new Date().getTime();
				try {
					N.time = M;
				}
				catch (L) {
					this.lastError = L;
					return M;
				}
			}
			return N.time;
		}, stopEvent:function (L) {
			this.stopPropagation(L);
			this.preventDefault(L);
		}, stopPropagation:function (L) {
			L = L.browserEvent || L;
			if (L.stopPropagation) {
				L.stopPropagation();
			} else {
				L.cancelBubble = true;
			}
		}, preventDefault:function (L) {
			L = L.browserEvent || L;
			if (L.preventDefault) {
				L.preventDefault();
			} else {
				L.returnValue = false;
			}
		}, getEvent:function (M) {
			var L = M || window.event;
			if (!L) {
				var N = this.getEvent.caller;
				while (N) {
					L = N.arguments[0];
					if (L && Event == L.constructor) {
						break;
					}
					N = N.caller;
				}
			}
			return L;
		}, getCharCode:function (L) {
			L = L.browserEvent || L;
			return L.charCode || L.keyCode || 0;
		}, _getCacheIndex:function (Q, N, P) {
			for (var O = 0, M = G.length; O < M; ++O) {
				var L = G[O];
				if (L && L[this.FN] == P && L[this.EL] == Q && L[this.TYPE] == N) {
					return O;
				}
			}
			return -1;
		}, elCache:{}, getEl:function (L) {
			return document.getElementById(L);
		}, clearCache:function () {
		}, _load:function (M) {
			F = true;
			var L = Ext.lib.Event;
			if (Ext.isIE) {
				L.doRemove(window, "load", L._load);
			}
		}, _tryPreloadAttach:function () {
			if (this.locked) {
				return false;
			}
			this.locked = true;
			var R = !F;
			if (!R) {
				R = (I > 0);
			}
			var Q = [];
			for (var M = 0, L = H.length; M < L; ++M) {
				var P = H[M];
				if (P) {
					var O = this.getEl(P.id);
					if (O) {
						if (!P.checkReady || F || O.nextSibling || (document && document.body)) {
							var N = O;
							if (P.override) {
								if (P.override === true) {
									N = P.obj;
								} else {
									N = P.override;
								}
							}
							P.fn.call(N, P.obj);
							H[M] = null;
						}
					} else {
						Q.push(P);
					}
				}
			}
			I = (Q.length === 0) ? 0 : I - 1;
			if (R) {
				this.startInterval();
			} else {
				clearInterval(this._interval);
				this._interval = null;
			}
			this.locked = false;
			return true;
		}, purgeElement:function (P, Q, N) {
			var R = this.getListeners(P, N);
			if (R) {
				for (var O = 0, L = R.length; O < L; ++O) {
					var M = R[O];
					this.removeListener(P, M.type, M.fn);
				}
			}
			if (Q && P && P.childNodes) {
				for (O = 0, L = P.childNodes.length; O < L; ++O) {
					this.purgeElement(P.childNodes[O], Q, N);
				}
			}
		}, getListeners:function (M, R) {
			var P = [], L;
			if (!R) {
				L = [G, K];
			} else {
				if (R == "unload") {
					L = [K];
				} else {
					L = [G];
				}
			}
			for (var O = 0; O < L.length; ++O) {
				var T = L[O];
				if (T && T.length > 0) {
					for (var Q = 0, S = T.length; Q < S; ++Q) {
						var N = T[Q];
						if (N && N[this.EL] === M && (!R || R === N[this.TYPE])) {
							P.push({type:N[this.TYPE], fn:N[this.FN], obj:N[this.OBJ], adjust:N[this.ADJ_SCOPE], index:Q});
						}
					}
				}
			}
			return (P.length) ? P : null;
		}, _unload:function (S) {
			var R = Ext.lib.Event, P, O, M, L, N;
			for (P = 0, L = K.length; P < L; ++P) {
				M = K[P];
				if (M) {
					var Q = window;
					if (M[R.ADJ_SCOPE]) {
						if (M[R.ADJ_SCOPE] === true) {
							Q = M[R.OBJ];
						} else {
							Q = M[R.ADJ_SCOPE];
						}
					}
					M[R.FN].call(Q, R.getEvent(S), M[R.OBJ]);
					K[P] = null;
					M = null;
					Q = null;
				}
			}
			K = null;
			if (G && G.length > 0) {
				O = G.length;
				while (O) {
					N = O - 1;
					M = G[N];
					if (M) {
						R.removeListener(M[R.EL], M[R.TYPE], M[R.FN], N);
					}
					O = O - 1;
				}
				M = null;
				R.clearCache();
			}
			R.doRemove(window, "unload", R._unload);
		}, getScroll:function () {
			var L = document.documentElement, M = document.body;
			if (L && (L.scrollTop || L.scrollLeft)) {
				return [L.scrollTop, L.scrollLeft];
			} else {
				if (M) {
					return [M.scrollTop, M.scrollLeft];
				} else {
					return [0, 0];
				}
			}
		}, doAdd:function () {
			if (window.addEventListener) {
				return function (O, M, N, L) {
					O.addEventListener(M, N, (L));
				};
			} else {
				if (window.attachEvent) {
					return function (O, M, N, L) {
						O.attachEvent("on" + M, N);
					};
				} else {
					return function () {
					};
				}
			}
		}(), doRemove:function () {
			if (window.removeEventListener) {
				return function (O, M, N, L) {
					O.removeEventListener(M, N, (L));
				};
			} else {
				if (window.detachEvent) {
					return function (N, L, M) {
						N.detachEvent("on" + L, M);
					};
				} else {
					return function () {
					};
				}
			}
		}()};
	}();
	var D = Ext.lib.Event;
	D.on = D.addListener;
	D.un = D.removeListener;
	if (document && document.body) {
		D._load();
	} else {
		D.doAdd(window, "load", D._load);
	}
	D.doAdd(window, "unload", D._unload);
	D._tryPreloadAttach();
	Ext.lib.Ajax = {request:function (K, I, E, J, F) {
		if (F) {
			var G = F.headers;
			if (G) {
				for (var H in G) {
					if (G.hasOwnProperty(H)) {
						this.initHeader(H, G[H], false);
					}
				}
			}
			if (F.xmlData) {
				if (!G || !G["Content-Type"]) {
					this.initHeader("Content-Type", "text/xml", false);
				}
				K = (K ? K : (F.method ? F.method : "POST"));
				J = F.xmlData;
			} else {
				if (F.jsonData) {
					if (!G || !G["Content-Type"]) {
						this.initHeader("Content-Type", "application/json", false);
					}
					K = (K ? K : (F.method ? F.method : "POST"));
					J = typeof F.jsonData == "object" ? Ext.encode(F.jsonData) : F.jsonData;
				}
			}
		}
		return this.asyncRequest(K, I, E, J);
	}, serializeForm:function (F) {
		if (typeof F == "string") {
			F = (document.getElementById(F) || document.forms[F]);
		}
		var G, E, H, J, K = "", M = false;
		for (var L = 0; L < F.elements.length; L++) {
			G = F.elements[L];
			J = F.elements[L].disabled;
			E = F.elements[L].name;
			H = F.elements[L].value;
			if (!J && E) {
				switch (G.type) {
				  case "select-one":
				  case "select-multiple":
					for (var I = 0; I < G.options.length; I++) {
						if (G.options[I].selected) {
							if (Ext.isIE) {
								K += encodeURIComponent(E) + "=" + encodeURIComponent(G.options[I].attributes["value"].specified ? G.options[I].value : G.options[I].text) + "&";
							} else {
								K += encodeURIComponent(E) + "=" + encodeURIComponent(G.options[I].hasAttribute("value") ? G.options[I].value : G.options[I].text) + "&";
							}
						}
					}
					break;
				  case "radio":
				  case "checkbox":
					if (G.checked) {
						K += encodeURIComponent(E) + "=" + encodeURIComponent(H) + "&";
					}
					break;
				  case "file":
				  case undefined:
				  case "reset":
				  case "button":
					break;
				  case "submit":
					if (M == false) {
						K += encodeURIComponent(E) + "=" + encodeURIComponent(H) + "&";
						M = true;
					}
					break;
				  default:
					K += encodeURIComponent(E) + "=" + encodeURIComponent(H) + "&";
					break;
				}
			}
		}
		K = K.substr(0, K.length - 1);
		return K;
	}, headers:{}, hasHeaders:false, useDefaultHeader:true, defaultPostHeader:"application/x-www-form-urlencoded; charset=UTF-8", useDefaultXhrHeader:true, defaultXhrHeader:"XMLHttpRequest", hasDefaultHeaders:true, defaultHeaders:{}, poll:{}, timeout:{}, pollInterval:50, transactionId:0, setProgId:function (E) {
		this.activeX.unshift(E);
	}, setDefaultPostHeader:function (E) {
		this.useDefaultHeader = E;
	}, setDefaultXhrHeader:function (E) {
		this.useDefaultXhrHeader = E;
	}, setPollingInterval:function (E) {
		if (typeof E == "number" && isFinite(E)) {
			this.pollInterval = E;
		}
	}, createXhrObject:function (I) {
		var H, E;
		try {
			E = new XMLHttpRequest();
			H = {conn:E, tId:I};
		}
		catch (G) {
			for (var F = 0; F < this.activeX.length; ++F) {
				try {
					E = new ActiveXObject(this.activeX[F]);
					H = {conn:E, tId:I};
					break;
				}
				catch (G) {
				}
			}
		}
		finally {
			return H;
		}
	}, getConnectionObject:function () {
		var F;
		var G = this.transactionId;
		try {
			F = this.createXhrObject(G);
			if (F) {
				this.transactionId++;
			}
		}
		catch (E) {
		}
		finally {
			return F;
		}
	}, asyncRequest:function (I, F, H, E) {
		var G = this.getConnectionObject();
		if (!G) {
			return null;
		} else {
			G.conn.open(I, F, true);
			if (this.useDefaultXhrHeader) {
				if (!this.defaultHeaders["X-Requested-With"]) {
					this.initHeader("X-Requested-With", this.defaultXhrHeader, true);
				}
			}
			if (E && this.useDefaultHeader && (!this.hasHeaders || !this.headers["Content-Type"])) {
				this.initHeader("Content-Type", this.defaultPostHeader);
			}
			if (this.hasDefaultHeaders || this.hasHeaders) {
				this.setHeader(G);
			}
			this.handleReadyState(G, H);
			G.conn.send(E || null);
			return G;
		}
	}, handleReadyState:function (F, G) {
		var E = this;
		if (G && G.timeout) {
			this.timeout[F.tId] = window.setTimeout(function () {
				E.abort(F, G, true);
			}, G.timeout);
		}
		this.poll[F.tId] = window.setInterval(function () {
			if (F.conn && F.conn.readyState == 4) {
				window.clearInterval(E.poll[F.tId]);
				delete E.poll[F.tId];
				if (G && G.timeout) {
					window.clearTimeout(E.timeout[F.tId]);
					delete E.timeout[F.tId];
				}
				E.handleTransactionResponse(F, G);
			}
		}, this.pollInterval);
	}, handleTransactionResponse:function (I, J, E) {
		if (!J) {
			this.releaseObject(I);
			return;
		}
		var G, F;
		try {
			if (I.conn.status !== undefined && I.conn.status != 0) {
				G = I.conn.status;
			} else {
				G = 13030;
			}
		}
		catch (H) {
			G = 13030;
		}
		if (G >= 200 && G < 300) {
			F = this.createResponseObject(I, J.argument);
			if (J.success) {
				if (!J.scope) {
					J.success(F);
				} else {
					J.success.apply(J.scope, [F]);
				}
			}
		} else {
			switch (G) {
			  case 12002:
			  case 12029:
			  case 12030:
			  case 12031:
			  case 12152:
			  case 13030:
				F = this.createExceptionObject(I.tId, J.argument, (E ? E : false));
				if (J.failure) {
					if (!J.scope) {
						J.failure(F);
					} else {
						J.failure.apply(J.scope, [F]);
					}
				}
				break;
			  default:
				F = this.createResponseObject(I, J.argument);
				if (J.failure) {
					if (!J.scope) {
						J.failure(F);
					} else {
						J.failure.apply(J.scope, [F]);
					}
				}
			}
		}
		this.releaseObject(I);
		F = null;
	}, createResponseObject:function (E, K) {
		var H = {};
		var M = {};
		try {
			var G = E.conn.getAllResponseHeaders();
			var J = G.split("\n");
			for (var I = 0; I < J.length; I++) {
				var F = J[I].indexOf(":");
				if (F != -1) {
					M[J[I].substring(0, F)] = J[I].substring(F + 2);
				}
			}
		}
		catch (L) {
		}
		H.tId = E.tId;
		H.status = E.conn.status;
		H.statusText = E.conn.statusText;
		H.getResponseHeader = M;
		H.getAllResponseHeaders = G;
		H.responseText = E.conn.responseText;
		H.responseXML = E.conn.responseXML;
		if (typeof K !== undefined) {
			H.argument = K;
		}
		return H;
	}, createExceptionObject:function (L, H, E) {
		var J = 0;
		var K = "communication failure";
		var G = -1;
		var F = "transaction aborted";
		var I = {};
		I.tId = L;
		if (E) {
			I.status = G;
			I.statusText = F;
		} else {
			I.status = J;
			I.statusText = K;
		}
		if (H) {
			I.argument = H;
		}
		return I;
	}, initHeader:function (E, H, G) {
		var F = (G) ? this.defaultHeaders : this.headers;
		if (F[E] === undefined) {
			F[E] = H;
		} else {
			F[E] = H + "," + F[E];
		}
		if (G) {
			this.hasDefaultHeaders = true;
		} else {
			this.hasHeaders = true;
		}
	}, setHeader:function (E) {
		if (this.hasDefaultHeaders) {
			for (var F in this.defaultHeaders) {
				if (this.defaultHeaders.hasOwnProperty(F)) {
					E.conn.setRequestHeader(F, this.defaultHeaders[F]);
				}
			}
		}
		if (this.hasHeaders) {
			for (var F in this.headers) {
				if (this.headers.hasOwnProperty(F)) {
					E.conn.setRequestHeader(F, this.headers[F]);
				}
			}
			this.headers = {};
			this.hasHeaders = false;
		}
	}, resetDefaultHeaders:function () {
		delete this.defaultHeaders;
		this.defaultHeaders = {};
		this.hasDefaultHeaders = false;
	}, abort:function (F, G, E) {
		if (this.isCallInProgress(F)) {
			F.conn.abort();
			window.clearInterval(this.poll[F.tId]);
			delete this.poll[F.tId];
			if (E) {
				delete this.timeout[F.tId];
			}
			this.handleTransactionResponse(F, G, true);
			return true;
		} else {
			return false;
		}
	}, isCallInProgress:function (E) {
		if (E.conn) {
			return E.conn.readyState != 4 && E.conn.readyState != 0;
		} else {
			return false;
		}
	}, releaseObject:function (E) {
		E.conn = null;
		E = null;
	}, activeX:["MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]};
	Ext.lib.Region = function (G, H, E, F) {
		this.top = G;
		this[1] = G;
		this.right = H;
		this.bottom = E;
		this.left = F;
		this[0] = F;
	};
	Ext.lib.Region.prototype = {contains:function (E) {
		return (E.left >= this.left && E.right <= this.right && E.top >= this.top && E.bottom <= this.bottom);
	}, getArea:function () {
		return ((this.bottom - this.top) * (this.right - this.left));
	}, intersect:function (I) {
		var G = Math.max(this.top, I.top);
		var H = Math.min(this.right, I.right);
		var E = Math.min(this.bottom, I.bottom);
		var F = Math.max(this.left, I.left);
		if (E >= G && H >= F) {
			return new Ext.lib.Region(G, H, E, F);
		} else {
			return null;
		}
	}, union:function (I) {
		var G = Math.min(this.top, I.top);
		var H = Math.max(this.right, I.right);
		var E = Math.max(this.bottom, I.bottom);
		var F = Math.min(this.left, I.left);
		return new Ext.lib.Region(G, H, E, F);
	}, constrainTo:function (E) {
		this.top = this.top.constrain(E.top, E.bottom);
		this.bottom = this.bottom.constrain(E.top, E.bottom);
		this.left = this.left.constrain(E.left, E.right);
		this.right = this.right.constrain(E.left, E.right);
		return this;
	}, adjust:function (G, F, E, H) {
		this.top += G;
		this.left += F;
		this.right += H;
		this.bottom += E;
		return this;
	}};
	Ext.lib.Region.getRegion = function (H) {
		var J = Ext.lib.Dom.getXY(H);
		var G = J[1];
		var I = J[0] + H.offsetWidth;
		var E = J[1] + H.offsetHeight;
		var F = J[0];
		return new Ext.lib.Region(G, I, E, F);
	};
	Ext.lib.Point = function (E, F) {
		if (Ext.isArray(E)) {
			F = E[1];
			E = E[0];
		}
		this.x = this.right = this.left = this[0] = E;
		this.y = this.top = this.bottom = this[1] = F;
	};
	Ext.lib.Point.prototype = new Ext.lib.Region();
	Ext.lib.Anim = {scroll:function (H, F, I, J, E, G) {
		return this.run(H, F, I, J, E, G, Ext.lib.Scroll);
	}, motion:function (H, F, I, J, E, G) {
		return this.run(H, F, I, J, E, G, Ext.lib.Motion);
	}, color:function (H, F, I, J, E, G) {
		return this.run(H, F, I, J, E, G, Ext.lib.ColorAnim);
	}, run:function (I, F, K, L, E, H, G) {
		G = G || Ext.lib.AnimBase;
		if (typeof L == "string") {
			L = Ext.lib.Easing[L];
		}
		var J = new G(I, F, K, L);
		J.animateX(function () {
			Ext.callback(E, H);
		});
		return J;
	}};
	function C(E) {
		if (!B) {
			B = new Ext.Element.Flyweight();
		}
		B.dom = E;
		return B;
	}
	if (Ext.isIE) {
		function A() {
			var E = Function.prototype;
			delete E.createSequence;
			delete E.defer;
			delete E.createDelegate;
			delete E.createCallback;
			delete E.createInterceptor;
			window.detachEvent("onunload", A);
		}
		window.attachEvent("onunload", A);
	}
	Ext.lib.AnimBase = function (F, E, G, H) {
		if (F) {
			this.init(F, E, G, H);
		}
	};
	Ext.lib.AnimBase.prototype = {toString:function () {
		var E = this.getEl();
		var F = E.id || E.tagName;
		return ("Anim " + F);
	}, patterns:{noNegatives:/width|height|opacity|padding/i, offsetAttribute:/^((width|height)|(top|left))$/, defaultUnit:/width|height|top$|bottom$|left$|right$/i, offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i}, doMethod:function (E, G, F) {
		return this.method(this.currentFrame, G, F - G, this.totalFrames);
	}, setAttribute:function (E, G, F) {
		if (this.patterns.noNegatives.test(E)) {
			G = (G > 0) ? G : 0;
		}
		Ext.fly(this.getEl(), "_anim").setStyle(E, G + F);
	}, getAttribute:function (E) {
		var G = this.getEl();
		var I = C(G).getStyle(E);
		if (I !== "auto" && !this.patterns.offsetUnit.test(I)) {
			return parseFloat(I);
		}
		var F = this.patterns.offsetAttribute.exec(E) || [];
		var J = !!(F[3]);
		var H = !!(F[2]);
		if (H || (C(G).getStyle("position") == "absolute" && J)) {
			I = G["offset" + F[0].charAt(0).toUpperCase() + F[0].substr(1)];
		} else {
			I = 0;
		}
		return I;
	}, getDefaultUnit:function (E) {
		if (this.patterns.defaultUnit.test(E)) {
			return "px";
		}
		return "";
	}, animateX:function (G, E) {
		var F = function () {
			this.onComplete.removeListener(F);
			if (typeof G == "function") {
				G.call(E || this, this);
			}
		};
		this.onComplete.addListener(F, this);
		this.animate();
	}, setRuntimeAttribute:function (F) {
		var K;
		var G;
		var H = this.attributes;
		this.runtimeAttributes[F] = {};
		var J = function (L) {
			return (typeof L !== "undefined");
		};
		if (!J(H[F]["to"]) && !J(H[F]["by"])) {
			return false;
		}
		K = (J(H[F]["from"])) ? H[F]["from"] : this.getAttribute(F);
		if (J(H[F]["to"])) {
			G = H[F]["to"];
		} else {
			if (J(H[F]["by"])) {
				if (K.constructor == Array) {
					G = [];
					for (var I = 0, E = K.length; I < E; ++I) {
						G[I] = K[I] + H[F]["by"][I];
					}
				} else {
					G = K + H[F]["by"];
				}
			}
		}
		this.runtimeAttributes[F].start = K;
		this.runtimeAttributes[F].end = G;
		this.runtimeAttributes[F].unit = (J(H[F].unit)) ? H[F]["unit"] : this.getDefaultUnit(F);
	}, init:function (G, L, K, E) {
		var F = false;
		var H = null;
		var J = 0;
		G = Ext.getDom(G);
		this.attributes = L || {};
		this.duration = K || 1;
		this.method = E || Ext.lib.Easing.easeNone;
		this.useSeconds = true;
		this.currentFrame = 0;
		this.totalFrames = Ext.lib.AnimMgr.fps;
		this.getEl = function () {
			return G;
		};
		this.isAnimated = function () {
			return F;
		};
		this.getStartTime = function () {
			return H;
		};
		this.runtimeAttributes = {};
		this.animate = function () {
			if (this.isAnimated()) {
				return false;
			}
			this.currentFrame = 0;
			this.totalFrames = (this.useSeconds) ? Math.ceil(Ext.lib.AnimMgr.fps * this.duration) : this.duration;
			Ext.lib.AnimMgr.registerElement(this);
		};
		this.stop = function (O) {
			if (O) {
				this.currentFrame = this.totalFrames;
				this._onTween.fire();
			}
			Ext.lib.AnimMgr.stop(this);
		};
		var N = function () {
			this.onStart.fire();
			this.runtimeAttributes = {};
			for (var O in this.attributes) {
				this.setRuntimeAttribute(O);
			}
			F = true;
			J = 0;
			H = new Date();
		};
		var M = function () {
			var Q = {duration:new Date() - this.getStartTime(), currentFrame:this.currentFrame};
			Q.toString = function () {
				return ("duration: " + Q.duration + ", currentFrame: " + Q.currentFrame);
			};
			this.onTween.fire(Q);
			var P = this.runtimeAttributes;
			for (var O in P) {
				this.setAttribute(O, this.doMethod(O, P[O].start, P[O].end), P[O].unit);
			}
			J += 1;
		};
		var I = function () {
			var O = (new Date() - H) / 1000;
			var P = {duration:O, frames:J, fps:J / O};
			P.toString = function () {
				return ("duration: " + P.duration + ", frames: " + P.frames + ", fps: " + P.fps);
			};
			F = false;
			J = 0;
			this.onComplete.fire(P);
		};
		this._onStart = new Ext.util.Event(this);
		this.onStart = new Ext.util.Event(this);
		this.onTween = new Ext.util.Event(this);
		this._onTween = new Ext.util.Event(this);
		this.onComplete = new Ext.util.Event(this);
		this._onComplete = new Ext.util.Event(this);
		this._onStart.addListener(N);
		this._onTween.addListener(M);
		this._onComplete.addListener(I);
	}};
	Ext.lib.AnimMgr = new function () {
		var G = null;
		var F = [];
		var E = 0;
		this.fps = 1000;
		this.delay = 1;
		this.registerElement = function (J) {
			F[F.length] = J;
			E += 1;
			J._onStart.fire();
			this.start();
		};
		this.unRegister = function (K, J) {
			K._onComplete.fire();
			J = J || I(K);
			if (J != -1) {
				F.splice(J, 1);
			}
			E -= 1;
			if (E <= 0) {
				this.stop();
			}
		};
		this.start = function () {
			if (G === null) {
				G = setInterval(this.run, this.delay);
			}
		};
		this.stop = function (L) {
			if (!L) {
				clearInterval(G);
				for (var K = 0, J = F.length; K < J; ++K) {
					if (F[0].isAnimated()) {
						this.unRegister(F[0], 0);
					}
				}
				F = [];
				G = null;
				E = 0;
			} else {
				this.unRegister(L);
			}
		};
		this.run = function () {
			for (var L = 0, J = F.length; L < J; ++L) {
				var K = F[L];
				if (!K || !K.isAnimated()) {
					continue;
				}
				if (K.currentFrame < K.totalFrames || K.totalFrames === null) {
					K.currentFrame += 1;
					if (K.useSeconds) {
						H(K);
					}
					K._onTween.fire();
				} else {
					Ext.lib.AnimMgr.stop(K, L);
				}
			}
		};
		var I = function (L) {
			for (var K = 0, J = F.length; K < J; ++K) {
				if (F[K] == L) {
					return K;
				}
			}
			return -1;
		};
		var H = function (K) {
			var N = K.totalFrames;
			var M = K.currentFrame;
			var L = (K.currentFrame * K.duration * 1000 / K.totalFrames);
			var J = (new Date() - K.getStartTime());
			var O = 0;
			if (J < K.duration * 1000) {
				O = Math.round((J / L - 1) * K.currentFrame);
			} else {
				O = N - (M + 1);
			}
			if (O > 0 && isFinite(O)) {
				if (K.currentFrame + O >= N) {
					O = N - (M + 1);
				}
				K.currentFrame += O;
			}
		};
	};
	Ext.lib.Bezier = new function () {
		this.getPosition = function (I, H) {
			var J = I.length;
			var G = [];
			for (var F = 0; F < J; ++F) {
				G[F] = [I[F][0], I[F][1]];
			}
			for (var E = 1; E < J; ++E) {
				for (F = 0; F < J - E; ++F) {
					G[F][0] = (1 - H) * G[F][0] + H * G[parseInt(F + 1, 10)][0];
					G[F][1] = (1 - H) * G[F][1] + H * G[parseInt(F + 1, 10)][1];
				}
			}
			return [G[0][0], G[0][1]];
		};
	};
	(function () {
		Ext.lib.ColorAnim = function (I, H, J, K) {
			Ext.lib.ColorAnim.superclass.constructor.call(this, I, H, J, K);
		};
		Ext.extend(Ext.lib.ColorAnim, Ext.lib.AnimBase);
		var F = Ext.lib;
		var G = F.ColorAnim.superclass;
		var E = F.ColorAnim.prototype;
		E.toString = function () {
			var H = this.getEl();
			var I = H.id || H.tagName;
			return ("ColorAnim " + I);
		};
		E.patterns.color = /color$/i;
		E.patterns.rgb = /^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;
		E.patterns.hex = /^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;
		E.patterns.hex3 = /^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;
		E.patterns.transparent = /^transparent|rgba\(0, 0, 0, 0\)$/;
		E.parseColor = function (H) {
			if (H.length == 3) {
				return H;
			}
			var I = this.patterns.hex.exec(H);
			if (I && I.length == 4) {
				return [parseInt(I[1], 16), parseInt(I[2], 16), parseInt(I[3], 16)];
			}
			I = this.patterns.rgb.exec(H);
			if (I && I.length == 4) {
				return [parseInt(I[1], 10), parseInt(I[2], 10), parseInt(I[3], 10)];
			}
			I = this.patterns.hex3.exec(H);
			if (I && I.length == 4) {
				return [parseInt(I[1] + I[1], 16), parseInt(I[2] + I[2], 16), parseInt(I[3] + I[3], 16)];
			}
			return null;
		};
		E.getAttribute = function (H) {
			var J = this.getEl();
			if (this.patterns.color.test(H)) {
				var K = C(J).getStyle(H);
				if (this.patterns.transparent.test(K)) {
					var I = J.parentNode;
					K = C(I).getStyle(H);
					while (I && this.patterns.transparent.test(K)) {
						I = I.parentNode;
						K = C(I).getStyle(H);
						if (I.tagName.toUpperCase() == "HTML") {
							K = "#fff";
						}
					}
				}
			} else {
				K = G.getAttribute.call(this, H);
			}
			return K;
		};
		E.doMethod = function (I, M, J) {
			var L;
			if (this.patterns.color.test(I)) {
				L = [];
				for (var K = 0, H = M.length; K < H; ++K) {
					L[K] = G.doMethod.call(this, I, M[K], J[K]);
				}
				L = "rgb(" + Math.floor(L[0]) + "," + Math.floor(L[1]) + "," + Math.floor(L[2]) + ")";
			} else {
				L = G.doMethod.call(this, I, M, J);
			}
			return L;
		};
		E.setRuntimeAttribute = function (I) {
			G.setRuntimeAttribute.call(this, I);
			if (this.patterns.color.test(I)) {
				var K = this.attributes;
				var M = this.parseColor(this.runtimeAttributes[I].start);
				var J = this.parseColor(this.runtimeAttributes[I].end);
				if (typeof K[I]["to"] === "undefined" && typeof K[I]["by"] !== "undefined") {
					J = this.parseColor(K[I].by);
					for (var L = 0, H = M.length; L < H; ++L) {
						J[L] = M[L] + J[L];
					}
				}
				this.runtimeAttributes[I].start = M;
				this.runtimeAttributes[I].end = J;
			}
		};
	})();
	Ext.lib.Easing = {easeNone:function (F, E, H, G) {
		return H * F / G + E;
	}, easeIn:function (F, E, H, G) {
		return H * (F /= G) * F + E;
	}, easeOut:function (F, E, H, G) {
		return -H * (F /= G) * (F - 2) + E;
	}, easeBoth:function (F, E, H, G) {
		if ((F /= G / 2) < 1) {
			return H / 2 * F * F + E;
		}
		return -H / 2 * ((--F) * (F - 2) - 1) + E;
	}, easeInStrong:function (F, E, H, G) {
		return H * (F /= G) * F * F * F + E;
	}, easeOutStrong:function (F, E, H, G) {
		return -H * ((F = F / G - 1) * F * F * F - 1) + E;
	}, easeBothStrong:function (F, E, H, G) {
		if ((F /= G / 2) < 1) {
			return H / 2 * F * F * F * F + E;
		}
		return -H / 2 * ((F -= 2) * F * F * F - 2) + E;
	}, elasticIn:function (G, E, K, J, F, I) {
		if (G == 0) {
			return E;
		}
		if ((G /= J) == 1) {
			return E + K;
		}
		if (!I) {
			I = J * 0.3;
		}
		if (!F || F < Math.abs(K)) {
			F = K;
			var H = I / 4;
		} else {
			var H = I / (2 * Math.PI) * Math.asin(K / F);
		}
		return -(F * Math.pow(2, 10 * (G -= 1)) * Math.sin((G * J - H) * (2 * Math.PI) / I)) + E;
	}, elasticOut:function (G, E, K, J, F, I) {
		if (G == 0) {
			return E;
		}
		if ((G /= J) == 1) {
			return E + K;
		}
		if (!I) {
			I = J * 0.3;
		}
		if (!F || F < Math.abs(K)) {
			F = K;
			var H = I / 4;
		} else {
			var H = I / (2 * Math.PI) * Math.asin(K / F);
		}
		return F * Math.pow(2, -10 * G) * Math.sin((G * J - H) * (2 * Math.PI) / I) + K + E;
	}, elasticBoth:function (G, E, K, J, F, I) {
		if (G == 0) {
			return E;
		}
		if ((G /= J / 2) == 2) {
			return E + K;
		}
		if (!I) {
			I = J * (0.3 * 1.5);
		}
		if (!F || F < Math.abs(K)) {
			F = K;
			var H = I / 4;
		} else {
			var H = I / (2 * Math.PI) * Math.asin(K / F);
		}
		if (G < 1) {
			return -0.5 * (F * Math.pow(2, 10 * (G -= 1)) * Math.sin((G * J - H) * (2 * Math.PI) / I)) + E;
		}
		return F * Math.pow(2, -10 * (G -= 1)) * Math.sin((G * J - H) * (2 * Math.PI) / I) * 0.5 + K + E;
	}, backIn:function (F, E, I, H, G) {
		if (typeof G == "undefined") {
			G = 1.70158;
		}
		return I * (F /= H) * F * ((G + 1) * F - G) + E;
	}, backOut:function (F, E, I, H, G) {
		if (typeof G == "undefined") {
			G = 1.70158;
		}
		return I * ((F = F / H - 1) * F * ((G + 1) * F + G) + 1) + E;
	}, backBoth:function (F, E, I, H, G) {
		if (typeof G == "undefined") {
			G = 1.70158;
		}
		if ((F /= H / 2) < 1) {
			return I / 2 * (F * F * (((G *= (1.525)) + 1) * F - G)) + E;
		}
		return I / 2 * ((F -= 2) * F * (((G *= (1.525)) + 1) * F + G) + 2) + E;
	}, bounceIn:function (F, E, H, G) {
		return H - Ext.lib.Easing.bounceOut(G - F, 0, H, G) + E;
	}, bounceOut:function (F, E, H, G) {
		if ((F /= G) < (1 / 2.75)) {
			return H * (7.5625 * F * F) + E;
		} else {
			if (F < (2 / 2.75)) {
				return H * (7.5625 * (F -= (1.5 / 2.75)) * F + 0.75) + E;
			} else {
				if (F < (2.5 / 2.75)) {
					return H * (7.5625 * (F -= (2.25 / 2.75)) * F + 0.9375) + E;
				}
			}
		}
		return H * (7.5625 * (F -= (2.625 / 2.75)) * F + 0.984375) + E;
	}, bounceBoth:function (F, E, H, G) {
		if (F < G / 2) {
			return Ext.lib.Easing.bounceIn(F * 2, 0, H, G) * 0.5 + E;
		}
		return Ext.lib.Easing.bounceOut(F * 2 - G, 0, H, G) * 0.5 + H * 0.5 + E;
	}};
	(function () {
		Ext.lib.Motion = function (K, J, L, M) {
			if (K) {
				Ext.lib.Motion.superclass.constructor.call(this, K, J, L, M);
			}
		};
		Ext.extend(Ext.lib.Motion, Ext.lib.ColorAnim);
		var H = Ext.lib;
		var I = H.Motion.superclass;
		var F = H.Motion.prototype;
		F.toString = function () {
			var J = this.getEl();
			var K = J.id || J.tagName;
			return ("Motion " + K);
		};
		F.patterns.points = /^points$/i;
		F.setAttribute = function (J, L, K) {
			if (this.patterns.points.test(J)) {
				K = K || "px";
				I.setAttribute.call(this, "left", L[0], K);
				I.setAttribute.call(this, "top", L[1], K);
			} else {
				I.setAttribute.call(this, J, L, K);
			}
		};
		F.getAttribute = function (J) {
			if (this.patterns.points.test(J)) {
				var K = [I.getAttribute.call(this, "left"), I.getAttribute.call(this, "top")];
			} else {
				K = I.getAttribute.call(this, J);
			}
			return K;
		};
		F.doMethod = function (J, N, K) {
			var M = null;
			if (this.patterns.points.test(J)) {
				var L = this.method(this.currentFrame, 0, 100, this.totalFrames) / 100;
				M = H.Bezier.getPosition(this.runtimeAttributes[J], L);
			} else {
				M = I.doMethod.call(this, J, N, K);
			}
			return M;
		};
		F.setRuntimeAttribute = function (S) {
			if (this.patterns.points.test(S)) {
				var K = this.getEl();
				var M = this.attributes;
				var J;
				var O = M["points"]["control"] || [];
				var L;
				var P, R;
				if (O.length > 0 && !Ext.isArray(O[0])) {
					O = [O];
				} else {
					var N = [];
					for (P = 0, R = O.length; P < R; ++P) {
						N[P] = O[P];
					}
					O = N;
				}
				Ext.fly(K, "_anim").position();
				if (G(M["points"]["from"])) {
					Ext.lib.Dom.setXY(K, M["points"]["from"]);
				} else {
					Ext.lib.Dom.setXY(K, Ext.lib.Dom.getXY(K));
				}
				J = this.getAttribute("points");
				if (G(M["points"]["to"])) {
					L = E.call(this, M["points"]["to"], J);
					var Q = Ext.lib.Dom.getXY(this.getEl());
					for (P = 0, R = O.length; P < R; ++P) {
						O[P] = E.call(this, O[P], J);
					}
				} else {
					if (G(M["points"]["by"])) {
						L = [J[0] + M["points"]["by"][0], J[1] + M["points"]["by"][1]];
						for (P = 0, R = O.length; P < R; ++P) {
							O[P] = [J[0] + O[P][0], J[1] + O[P][1]];
						}
					}
				}
				this.runtimeAttributes[S] = [J];
				if (O.length > 0) {
					this.runtimeAttributes[S] = this.runtimeAttributes[S].concat(O);
				}
				this.runtimeAttributes[S][this.runtimeAttributes[S].length] = L;
			} else {
				I.setRuntimeAttribute.call(this, S);
			}
		};
		var E = function (J, L) {
			var K = Ext.lib.Dom.getXY(this.getEl());
			J = [J[0] - K[0] + L[0], J[1] - K[1] + L[1]];
			return J;
		};
		var G = function (J) {
			return (typeof J !== "undefined");
		};
	})();
	(function () {
		Ext.lib.Scroll = function (I, H, J, K) {
			if (I) {
				Ext.lib.Scroll.superclass.constructor.call(this, I, H, J, K);
			}
		};
		Ext.extend(Ext.lib.Scroll, Ext.lib.ColorAnim);
		var F = Ext.lib;
		var G = F.Scroll.superclass;
		var E = F.Scroll.prototype;
		E.toString = function () {
			var H = this.getEl();
			var I = H.id || H.tagName;
			return ("Scroll " + I);
		};
		E.doMethod = function (H, K, I) {
			var J = null;
			if (H == "scroll") {
				J = [this.method(this.currentFrame, K[0], I[0] - K[0], this.totalFrames), this.method(this.currentFrame, K[1], I[1] - K[1], this.totalFrames)];
			} else {
				J = G.doMethod.call(this, H, K, I);
			}
			return J;
		};
		E.getAttribute = function (H) {
			var J = null;
			var I = this.getEl();
			if (H == "scroll") {
				J = [I.scrollLeft, I.scrollTop];
			} else {
				J = G.getAttribute.call(this, H);
			}
			return J;
		};
		E.setAttribute = function (H, K, J) {
			var I = this.getEl();
			if (H == "scroll") {
				I.scrollLeft = K[0];
				I.scrollTop = K[1];
			} else {
				G.setAttribute.call(this, H, K, J);
			}
		};
	})();
})();

